#include <iostream>
#include <string>
using namespace std;
class MyStack;

class listNode
{
    friend class MyStack;
    
private:
    listNode *next;
    int data;

public:
    listNode();
    listNode(int nodeData, listNode *succ = NULL);
};

class MyStack
{
private:
    listNode *topNode; // 栈头结点
    int stackSize;     // 栈里元素的大小

public:
    MyStack();
    ~MyStack();

    bool push(const int &);
    bool pop(int &);
    bool getTop(int &);
    void printStack();
    bool empty(); // 添加一个判空函数
};

class MyQueue
{
private:
    int *queue;   // 充当数组
    int capacity; // 大小
    int front;    // 队首指针,实际是数组的下标
    int rear;     // 队尾指针,实际是数组的下标

public:
    MyQueue(const int &);
    ~MyQueue();

    bool enQueue(const int &);
    bool deQueue(int &);
    bool getFront(int &);
    void printQueue();

    bool isFull();
};

bool postfixExpression(const string &, string &);

bool expressionVal(const string &, int &);

void yanghui(const int &);
